OpenGL踩坑实录
要想使用OpenGL,必须先行创建并激活一个OpenGL Context,在多线程的情况下,若多个线程都想要使用OpenGL,那么有以下两个选项来避免Context的冲突。
ctx_mutex.lock();
glfwMakeContextCurrent(cur_ctx);
/***
do something
***/
glfwMakeContextCurrent(nullptr);
ctx_mutex.unlock();
否则有可能修改到其他线程的上下文。 除开这个问题,不同上下文间,所有资源都是不共享的,因此在编写各种渲染类时,需要按照不同的线程申请不同的资源。要不就在使用glfwCreateWindow时启用共享上下文。